home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / linux / ptrace.h < prev    next >
C/C++ Source or Header  |  2005-10-13  |  4KB  |  123 lines

  1. #ifndef _LINUX_PTRACE_H
  2. #define _LINUX_PTRACE_H
  3. /* ptrace.h */
  4. /* structs and defines to help the user use the ptrace system call. */
  5.  
  6. /* has the defines to get at the registers. */
  7.  
  8. #define PTRACE_TRACEME           0
  9. #define PTRACE_PEEKTEXT           1
  10. #define PTRACE_PEEKDATA           2
  11. #define PTRACE_PEEKUSR           3
  12. #define PTRACE_POKETEXT           4
  13. #define PTRACE_POKEDATA           5
  14. #define PTRACE_POKEUSR           6
  15. #define PTRACE_CONT           7
  16. #define PTRACE_KILL           8
  17. #define PTRACE_SINGLESTEP       9
  18.  
  19. #define PTRACE_ATTACH        0x10
  20. #define PTRACE_DETACH        0x11
  21.  
  22. #define PTRACE_SYSCALL          24
  23.  
  24. /* 0x4200-0x4300 are reserved for architecture-independent additions.  */
  25. #define PTRACE_SETOPTIONS    0x4200
  26. #define PTRACE_GETEVENTMSG    0x4201
  27. #define PTRACE_GETSIGINFO    0x4202
  28. #define PTRACE_SETSIGINFO    0x4203
  29.  
  30. /* options set using PTRACE_SETOPTIONS */
  31. #define PTRACE_O_TRACESYSGOOD    0x00000001
  32. #define PTRACE_O_TRACEFORK    0x00000002
  33. #define PTRACE_O_TRACEVFORK    0x00000004
  34. #define PTRACE_O_TRACECLONE    0x00000008
  35. #define PTRACE_O_TRACEEXEC    0x00000010
  36. #define PTRACE_O_TRACEVFORKDONE    0x00000020
  37. #define PTRACE_O_TRACEEXIT    0x00000040
  38.  
  39. #define PTRACE_O_MASK        0x0000007f
  40.  
  41. /* Wait extended result codes for the above trace options.  */
  42. #define PTRACE_EVENT_FORK    1
  43. #define PTRACE_EVENT_VFORK    2
  44. #define PTRACE_EVENT_CLONE    3
  45. #define PTRACE_EVENT_EXEC    4
  46. #define PTRACE_EVENT_VFORK_DONE    5
  47. #define PTRACE_EVENT_EXIT    6
  48.  
  49. #include <asm/ptrace.h>
  50.  
  51. #ifdef __KERNEL__
  52. /*
  53.  * Ptrace flags
  54.  */
  55.  
  56. #define PT_PTRACED    0x00000001
  57. #define PT_DTRACE    0x00000002    /* delayed trace (used on m68k, i386) */
  58. #define PT_TRACESYSGOOD    0x00000004
  59. #define PT_PTRACE_CAP    0x00000008    /* ptracer can follow suid-exec */
  60. #define PT_TRACE_FORK    0x00000010
  61. #define PT_TRACE_VFORK    0x00000020
  62. #define PT_TRACE_CLONE    0x00000040
  63. #define PT_TRACE_EXEC    0x00000080
  64. #define PT_TRACE_VFORK_DONE    0x00000100
  65. #define PT_TRACE_EXIT    0x00000200
  66. #define PT_ATTACHED    0x00000400    /* parent != real_parent */
  67.  
  68. #define PT_TRACE_MASK    0x000003f4
  69.  
  70. /* single stepping state bits (used on ARM and PA-RISC) */
  71. #define PT_SINGLESTEP_BIT    31
  72. #define PT_SINGLESTEP        (1<<PT_SINGLESTEP_BIT)
  73. #define PT_BLOCKSTEP_BIT    30
  74. #define PT_BLOCKSTEP        (1<<PT_BLOCKSTEP_BIT)
  75.  
  76. #include <linux/compiler.h>        /* For unlikely.  */
  77. #include <linux/sched.h>        /* For struct task_struct.  */
  78.  
  79. extern int ptrace_readdata(struct task_struct *tsk, unsigned long src, char __user *dst, int len);
  80. extern int ptrace_writedata(struct task_struct *tsk, char __user *src, unsigned long dst, int len);
  81. extern int ptrace_attach(struct task_struct *tsk);
  82. extern int ptrace_detach(struct task_struct *, unsigned int);
  83. extern void ptrace_disable(struct task_struct *);
  84. extern int ptrace_check_attach(struct task_struct *task, int kill);
  85. extern int ptrace_request(struct task_struct *child, long request, long addr, long data);
  86. extern void ptrace_notify(int exit_code);
  87. extern void __ptrace_link(struct task_struct *child,
  88.               struct task_struct *new_parent);
  89. extern void __ptrace_unlink(struct task_struct *child);
  90. extern void ptrace_untrace(struct task_struct *child);
  91.  
  92. static inline void ptrace_link(struct task_struct *child,
  93.                    struct task_struct *new_parent)
  94. {
  95.     if (unlikely(child->ptrace))
  96.         __ptrace_link(child, new_parent);
  97. }
  98. static inline void ptrace_unlink(struct task_struct *child)
  99. {
  100.     if (unlikely(child->ptrace))
  101.         __ptrace_unlink(child);
  102. }
  103.  
  104.  
  105. #ifndef force_successful_syscall_return
  106. /*
  107.  * System call handlers that, upon successful completion, need to return a
  108.  * negative value should call force_successful_syscall_return() right before
  109.  * returning.  On architectures where the syscall convention provides for a
  110.  * separate error flag (e.g., alpha, ia64, ppc{,64}, sparc{,64}, possibly
  111.  * others), this macro can be used to ensure that the error flag will not get
  112.  * set.  On architectures which do not support a separate error flag, the macro
  113.  * is a no-op and the spurious error condition needs to be filtered out by some
  114.  * other means (e.g., in user-level, by passing an extra argument to the
  115.  * syscall handler, or something along those lines).
  116.  */
  117. #define force_successful_syscall_return() do { } while (0)
  118. #endif
  119.  
  120. #endif
  121.  
  122. #endif
  123.